home *** CD-ROM | disk | FTP | other *** search
Oberon Text | 1990-12-20 | 2.1 KB | 51 lines | [.Ob./.Ob2] |
- Syntax10.Scn.Fnt
- Syntax10i.Scn.Fnt
- Syntax10b.Scn.Fnt
- MODULE KeyCmds; (* CAS 9-Jul-90 *) (*sample extensions of EdiTKeys / TBoxKeys*)
- IMPORT
- Oberon, Display, Fonts, Viewers, Texts, TextFrames;
- CONST
- cpm = 3; (*charcters per month name*)
- mnam: ARRAY 12*cpm + 1 OF CHAR;
- W: Texts.Writer;
- PROCEDURE Ch(ch: CHAR);
- BEGIN Texts.Write(W, ch)
- END Ch;
- PROCEDURE Int(x: LONGINT);
- BEGIN Texts.WriteInt(W, x, 0)
- END Int;
- PROCEDURE Int2(x: LONGINT);
- BEGIN
- IF x > 10 THEN Ch(CHR(x DIV 10 + 30H)) ELSE Ch("0") END;
- Ch(CHR(x MOD 10 + 30H))
- END Int2;
- PROCEDURE Month(m: LONGINT);
- VAR i, j: LONGINT;
- BEGIN j := m * cpm; i := j - cpm; REPEAT Ch(mnam[i]); INC(i) UNTIL i = j
- END Month;
- PROCEDURE InsertAtCaret(buf: Texts.Buffer);
- VAR msg: Oberon.CopyOverMsg;
- BEGIN msg.text := TextFrames.Text(""); msg.beg := 0; msg.end := buf.len;
- Texts.Insert(msg.text, 0, buf); Viewers.Broadcast(msg)
- END InsertAtCaret;
- PROCEDURE DateStamp*; (**EdiTKeys and TBoxKeys**)
- VAR S: Texts.Scanner; date, time: LONGINT;
- BEGIN Oberon.GetClock(time, date); Texts.OpenScanner(S, Oberon.Par.text, Oberon.Par.pos); Texts.Scan(S);
- IF S.class = Texts.Name THEN Texts.SetFont(W, Fonts.This(S.s)) ELSE Texts.SetFont(W, Fonts.Default) END;
- Int(date MOD 20H); Ch("-"); Month( (date DIV 20H) MOD 10H ); Ch("-"); Int2( (date DIV 200H) MOD 100 );
- InsertAtCaret(W.buf)
- END DateStamp;
- PROCEDURE Include*; (**EdiTKeys and TBoxKeys**)
- VAR S: Texts.Scanner; buf: Texts.Buffer; text: Texts.Text; beg, end: LONGINT;
- BEGIN NEW(buf); Texts.OpenBuf(buf); Texts.OpenScanner(S, Oberon.Par.text, Oberon.Par.pos); Texts.Scan(S);
- IF S.class = Texts.Name THEN text := TextFrames.Text(S.s); Texts.Scan(S); beg := 0;
- IF S.class = Texts.Int THEN end := S.i; Texts.Scan(S);
- IF S.class = Texts.Int THEN beg := end; end := S.i END
- ELSE end := text.len
- END;
- IF (0 <= beg) & (beg < end) & (end <= text.len) THEN Texts.Save(text, beg, end, buf); InsertAtCaret(buf) END
- END
- END Include;
- BEGIN Texts.OpenWriter(W); mnam := "JanFebMarAprMayJunJulAugSepOctNovDec"
- END KeyCmds.
-